package com.zz;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;

public class Main {

	public static void main(String[] pathMarkdown) throws Exception {
		// 校验参数唯一
		if (pathMarkdown == null || pathMarkdown.length != 1) {
			throw new IllegalArgumentException("非法的参数");
		}

		// 创建MarkdownDoc文件对象
		MarkdownDoc markdownDoc = new MarkdownDoc(pathMarkdown[0].trim());

		// 已用图片集合，不要删除
		HashSet<File> fileListCantDel = new HashSet<>();
		// 图片文件夹中所有图片的数组
		File[] filesInDir = markdownDoc.getImageFilesFromDir();
		// 双层循环，判断图片文件夹中的某张图片是否可删除
		for (File fileInDir : filesInDir) {
			for (File fileInMd : markdownDoc.getLocalImageFileListFromMd()) {
				try {
					// NIO中关于文件路径指向的文件是否一致的方法
					if (Files.isSameFile(fileInDir.toPath(), fileInMd.toPath())) {
						// 本地图片与Md文件中的路径指向一致，说明本地图片被使用
						System.out.println("图片已用，不可删除：" + fileInDir.getAbsolutePath());
						fileListCantDel.add(fileInDir); // 存入不要删除集合
						break;
					}
				} catch (IOException ignored) {
				}
			}
		}

		// 数组直接转换而来的集合是不可变类，需要再包裹一层
		ArrayList<File> fileListInDir = new ArrayList<>(Arrays.asList(filesInDir));
		// 从图片文件夹中图片的集合中删除不可删除的图片，则剩下的就是可删除的
		fileListInDir.removeAll(fileListCantDel);

		if (fileListInDir.size() != 0) {
			System.out.println("ClearMarkdownImage =======================> 以下图片将被删除，同意请输入“1”；不同意请输入任意字符");
		} else {
			System.out.println("ClearMarkdownImage =======================> 没有图片可以删除，谢谢使用！");
			return;
		}
		fileListInDir.forEach(System.out::println);
		System.out.print("请输入您的选择：");

		Scanner scanner = new Scanner(System.in);
		String input = scanner.nextLine();

		if ("1".equalsIgnoreCase(input)) {
			System.out.println("ClearMarkdownImage =======================> 正在删除……");
			// 遍历删除
			fileListInDir.forEach(file -> {
				if (file.delete()) {
					System.out.println(file + "\t已成功删除");
				} else {
					System.out.println(file + "\t删除失败");
				}
			});
			System.out.println("ClearMarkdownImage =======================> 删除完成，谢谢使用！");
		} else {
			System.out.println("ClearMarkdownImage =======================> 您已退出本次操作，谢谢使用！");
		}
	}
}
